//数组去重
//利用json结构的特性，将数组元素引入json对象，再键值反转，因为键名唯一，相同的值会被覆盖，完成去重

let arr1 = ['1', 'sss', 'a', 'b', 'a', '1', 'sdsd', 'a', 'sdsd', 'asd', 12, {1:2}, 'asd', 12, {2:3}, 1]
let arr2 = []
let jsonObj = {}

for(let i in arr1){
    // jsonObj1[i] = arr1[i]
    jsonObj[arr1[i]] = i
}
console.log(jsonObj)
for(let i in jsonObj){
    arr2.push(i)
}
console.log(arr2)
// [ '1', '12', 'sss', 'a', 'b', 'sdsd', 'asd', '[object Object]' ]
// 数字变成了字符串类型，对象都是字符串类型的 '[object Object]'，如果数字是1，就会与字符串1重合，只保留一个字符串1



//精简为一个方法
function unique(arr){
    let obj = {}
    let data = []
    for(let i in arr){
        if(!obj[arr[i]]){
            obj[arr[i]] = true
            data.push(arr[i])
        }
    }
    console.log(data)
    // [ '1', 'sss', 'a', 'b', 'sdsd', 'asd', 12, { '1': 2 } ]
    // 12会保持数字类型，对象也会保持对象的类型，但是同样不会比较对象内部的值，只会保留第一个对象
}
unique(arr1)